﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Sociedad.DAL
{
    public class WfdocumentoDAL
    {
        EntityConnectionSOA context = new EntityConnectionSOA();
        

        // Donde: pTipMovWF: <I> Iniciar Documento <C> Continuar Actividad
        public String Insertar_DocumentoWF(Wfs_SeguimientoDocumento oDocWF, Char pTipMovWF)
        {
            String cRpta = "0@";
            try
            {
                var parameters = new[] { 
                new SqlParameter("@0", oDocWF.ctdo_Codigo ),
                new SqlParameter("@1", oDocWF.cedo_CodDoc  ),
                new SqlParameter("@2", oDocWF.cprm_EnviaTipUO  ),
                new SqlParameter("@3", oDocWF.cent_EnviaUO  ),
                new SqlParameter("@4", oDocWF.usr_EnviaUser  ),
                new SqlParameter("@5", oDocWF.csdo_Comentario  ),
                new SqlParameter("@6", oDocWF.cprm_Estado  ),
                new SqlParameter("@7", pTipMovWF ),
                new SqlParameter("@8", SqlDbType.VarChar, 100) { Direction = ParameterDirection.Output }        
                };

                context.ExecuteStoreCommand("exec Ins_DocumentoWF @_ctdo_Codigo=@0, @_cedo_CodDoc=@1, @_cprm_EnviaTipUO=@2, @_cent_EnviaUO=@3, @_usr_EnviaUser=@4, @_csdo_Comentario=@5, @_cprm_Estado=@6, @_TipMovWF=@7, @_ResultMsj=@8 output", parameters);

                cRpta = (String)parameters[8].Value;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return cRpta;
        }

        // Parametros:
        //      pTipBandeja: [01] BandejaEncargadoOCI, [02] BandejaEncargadoSOA,
        //                   [04] BandejaSupervisor, [03] BandejaOperador
        //      pOpción: [T] Todos, [xxxx] Estado
        public List<vw_LIstar_DocumentosBandeja> Listar_DocumentosBandeja(String pTipBandeja, String pEstado)
        {
            List<vw_LIstar_DocumentosBandeja> lstDocBan = new List<vw_LIstar_DocumentosBandeja>();
            try
            {
                String[] cEstados = {pEstado};
                if (pEstado.Equals("T"))
                {
                    switch (Convert.ToInt32(pTipBandeja))
                    {
                        case 1: // BandejaEncargadoSOA
                            break;
                        case 2: // BandejaEncargadoOCI
                            break;
                        case 3: // BandejaOperador
                            String[] cEstados3 = { "2202", "2302" };
                            cEstados = cEstados3;
                            break;
                        case 4: // BandejaEvaluador
                            String[] cEstados4 = { "2002","2203","2303" };
                            cEstados = cEstados4;
                            break;
                        case 5: // BandejaGerenteCentral
                            String[] cEstados5 = { "2204", "2206" };
                            cEstados = cEstados5;
                            break;
                        default:
                            break;
                    }
                }
                var lista = from lst in context.vw_LIstar_DocumentosBandeja
                            where (cEstados.Contains((String)lst.cprm_Estado))
                            select lst;
                if (lista.Count() <= 0)
                {
                    lstDocBan = null;
                }
                else
                {
                    lstDocBan = lista.ToList();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lstDocBan;
        }


        public List<vw_Listar_OpcionesWF_CalificacionDoc> Listar_OpcionesWF_CalificacionDOC(String pTipDoc, String pEstDoc)
        {
            List<vw_Listar_OpcionesWF_CalificacionDoc> lstOp = new List<vw_Listar_OpcionesWF_CalificacionDoc>();
            try
            {
                var lista = from lst in context.vw_Listar_OpcionesWF_CalificacionDoc
                            where lst.cCodTipDoc == pTipDoc && lst.cEstOrigen == pEstDoc
                            select lst;
                if (lista.Count() > 0)
                {
                    lstOp = lista.ToList();
                }
                else
                {
                    lstOp = null;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lstOp;
        }
    }
}
